import { requestGet } from '../utils/httpUtil'
import { promptAction } from '@kit.ArkUI'
import {banners,Banner,SongList,Song,AlbumList,Album,HotSingerList,Singer} from '../models/HomeData'

//轮播图图片获取
export async function getBanners(Banners:Array<Banner>,bannerResult:string):
  Promise<{ Banners: Array<Banner>}|string>{
  let Ba: banners = new banners();
  try {
    const response = await requestGet('/banner');
    Ba = JSON.parse(response);
    // 清空现有的 bannerImageUrl 数组
    Banners = [];
    if (Ba && Array.isArray(Ba.banners)) {
      Ba.banners.forEach((banner: Banner) => {
        Banners.push(banner)
      });
    }
    // 返回修改后的 bannerImageUrl 数组
    return { Banners: Banners };
  } catch (err) {
    // 错误处理：返回错误信息
    bannerResult = '错误代码为：' + (err.code || '未知错误') + ', 错误信息：' + JSON.stringify(err);
    // 弹出错误提示
    promptAction.showToast({ message: bannerResult });
    console.log(bannerResult)
    // 返回错误信息
    return bannerResult;
  }
}

// 新歌歌曲获取
export async function getNewSong(
  newSong:Array<Song>,
  result: string
): Promise<{ newSong:Array<Song> } | string> {
  let NewSong: SongList = new SongList();

  try {
    const response = await requestGet('/mv/first?limit=7');
    NewSong = JSON.parse(response);
    newSong=[]
    if (NewSong && Array.isArray(NewSong.data)) {
      NewSong.data.forEach((song: Song) => {
        if (song.id) {
          newSong.push(song) // 将歌曲添加到数组
        }
      });
    }
    // 返回一个包含三个数组的对象
    return {
      newSong:newSong
    };
  } catch (err) {
    result = '错误代码为：' + err.code + ', 错误信息：' + JSON.stringify(err);
    promptAction.showToast({ message: result }); // 弹出错误提示
    console.error(result);
    return result;
  }
}

// 新专辑获取
export async function getNewAlbum(newAlbum:Array<Album>, result: string)
  : Promise<{ newAlbum: Array<Album> } | string> {
  let NewAlbum: AlbumList = new AlbumList();

  try {
    const response = await requestGet('/album/newest');
    NewAlbum = JSON.parse(response);
    newAlbum = [];
    if (NewAlbum && Array.isArray(NewAlbum.albums)) {
      NewAlbum.albums.forEach((album: Album) => {
        if (album.id) {
          newAlbum.push(album);
        }
      });
    }
    // 返回一个包含三个数组的对象
    return {
      newAlbum:newAlbum
    };
  } catch (err) {
    result = '错误代码为：' + err.code + ', 错误信息：' + JSON.stringify(err);
    promptAction.showToast({ message: result }); // 弹出错误提示
    console.error(result);
    return result;
  }
}

// 热门歌手获取
export async function getHotSinger(
  hotSingerData: Array<Singer>,
  result: string
): Promise<{ hotSingerData: Array<Singer> } | string> {
  let hotSinger: HotSingerList = new HotSingerList();

  try {
    const response = await requestGet('/top/artists?offset=0&limit=9');
    hotSinger = JSON.parse(response);
    hotSingerData = [];
    if (hotSinger && Array.isArray(hotSinger.artists)) {
      hotSinger.artists.forEach((singer: Singer) => {
        if (singer.id) {
          hotSingerData.push(singer); // 将歌手添加到数组
        }
      });
    }
    // 返回一个包含2个数组的对象
    return {
      hotSingerData: hotSingerData
    };
  } catch (err) {
    result = '错误代码为：' + err.code + ', 错误信息：' + JSON.stringify(err);
    promptAction.showToast({ message: result }); // 弹出错误提示
    console.error(result);
    return result;
  }
}

